from flask import current_app
from qiniu import Auth, put_data

# 填写自己的 Acess Key 和 Secret_key
access_key = "W0oGRaBkAhrcppAbz6Nc8-q5EcXfL5vLRashY4SI"
secret_key = "tsYCBckepW4CqW0uHb9RdfDMXRDOTEpYecJAMItL"

# 要上传的空间名字（因为写的是老师的七牛云，所以可能要改为information23，测试过后是要用此空间名）
bucket_name = 'information23'


def storage(data):
    """
    七牛云存储上传文件接口
    :param data:图片二进制数据
    :return:
    """

    if not data:
        return None
    try:
        # 用户权限校验
        q = Auth(access_key, secret_key)

        # 生成上传的Token, 可以指定过期时间等
        token = q.upload_token(bucket_name)

        # 上传文件
        ret, info = put_data(token, None, data)

    except Exception as e:
        current_app.logger.error(e)
        raise AttributeError("上传图片到七牛云异常")

    # 同时满足info有值和info的状态码不等于200时，抛出异常
    if info and info.status_code != 200:
        raise AttributeError("上传文件到七牛云失败")

    # 图片名称
    return ret["key"]


if __name__ == '__main__':
    file_name = input("输入图片路径:")
    with open(file_name, "rb") as f:
        data = f.read()
        storage(data)
